Autogenerated HTML docs for v1.9.0-258-g00eda
diff --git a/RelNotes/2.0.0.txt b/RelNotes/2.0.0.txt index acc7415..0c71d9d 100644 --- a/RelNotes/2.0.0.txt +++ b/RelNotes/2.0.0.txt
@@ -63,7 +63,27 @@ "quiet", has been removed (it told Git to ignore deletion, which you can do with "git diff-files --diff-filter=d"). - * Many commands that creates commits, e.g. "pull", "rebase", + * Server operators can loosen the "tips of refs only" restriction for + the remote archive service with the uploadarchive.allowUnreachable + configuration option. + + * The progress indicators from various time-consuming commands have + been marked for i18n/l10n. + + * "git notes -C <blob>" diagnoses an attempt to use an object that + is not a blob as an error. + + * "git config" learned to read from the standard input when "-" is + given as the value to its "--file" parameter (attempting an + operation to update the configuration in the standard input of + course is rejected). + + * Trailing whitespaces in .gitignore files, unless they are quoted + for fnmatch(3), e.g. "path\ ", are warned and ignored. Strictly + speaking, this is a backward incompatible change, but very unlikely + to bite any sane user and adjusting should be obvious and easy. + + * Many commands that create commits, e.g. "pull", "rebase", learned to take the --gpg-sign option on the command line. * "git commit" can be told to always GPG sign the resulting commit @@ -85,6 +105,14 @@ Performance, Internal Implementation, etc. + * We started using wildmatch() in place of fnmatch(3) a few releases + ago; complete the process and stop using fnmatch(3). + + * Uses of curl's "multi" interface and "easy" interface do not mix + well when we attempt to reuse outgoing connections. Teach the RPC + over http code, used in the smart HTTP transport, not to use the + "easy" interface. + * The bitmap-index feature from JGit has been ported, which should significantly improve performance when serving objects form a repository that uses it. @@ -97,7 +125,9 @@ suits your needs better when using the former. -Also contains various documentation updates and code clean-ups. +Also contains various documentation updates and code clean-ups. Many +of them came from flurry of activities as GSoC candidate microproject +exercises. Fixes since v1.9 series @@ -107,6 +137,37 @@ track are contained in this release (see the maintenance releases' notes for details). + * "git difftool" misbehaved when the repository is bound to the + working tree with the ".git file" mechanism, where a textual file + ".git" tells us where it is. + (merge fcfec8b da/difftool-git-files later to maint). + + * "git push" did not pay attention to branch.*.pushremote if it is + defined earlier than remote.pushdefault; the order of these two + variables in the configuration file should not matter, but it did + by mistake. + (merge 98b406f jk/remote-pushremote-config-reading later to maint). + + * Codepaths that parse timestamps in commit objects have been + tightened. + (merge 3f419d4 jk/commit-dates-parsing-fix later to maint). + + * "git diff --external-diff" incorrectly fed the submodule directory + in the working tree to the external diff driver when it knew it is + the same as one of the versions being compared. + (merge aba4727 tr/diff-submodule-no-reuse-worktree later to maint). + + * "git reset" needs to refresh the index when working in a working + tree (it can also be used to match the index to the HEAD in an + otherwise bare repository), but it failed to set up the working + tree properly, causing GIT_WORK_TREE to be ignored. + (merge b7756d4 nd/reset-setup-worktree later to maint). + + * "git check-attr" when working on a repository with a working tree + did not work well when the working tree was specified via the + --work-tree (and obviously with --git-dir) option. + (merge cdbf623 jc/check-attr-honor-working-tree later to maint). + * "merge-recursive" was broken in 1.7.7 era and stopped working in an empty (temporary) working tree, when there are renames involved. This has been corrected.
diff --git a/config.txt b/config.txt index 73904bc..79e5768 100644 --- a/config.txt +++ b/config.txt
@@ -1607,6 +1607,10 @@ The configuration variables in the 'imap' section are described in linkgit:git-imap-send[1]. +index.version:: + Specify the version with which new index files should be + initialized. This does not affect existing repositories. + init.templatedir:: Specify the directory from which templates will be copied. (See the "TEMPLATE DIRECTORY" section of linkgit:git-init[1].) @@ -1639,7 +1643,7 @@ linkgit:git-add[1], linkgit:git-checkout[1], linkgit:git-commit[1], linkgit:git-reset[1], and linkgit:git-stash[1]. Note that this setting is silently ignored if portable keystroke input - is not available. + is not available; requires the Perl module Term::ReadKey. log.abbrevCommit:: If true, makes linkgit:git-log[1], linkgit:git-show[1], and @@ -2332,6 +2336,13 @@ not set, the value of this variable is used instead. The default value is 100. +uploadarchive.allowUnreachable:: + If true, allow clients to use `git archive --remote` to request + any tree, whether reachable from the ref tips or not. See the + discussion in the `SECURITY` section of + linkgit:git-upload-archive[1] for more details. Defaults to + `false`. + uploadpack.hiderefs:: String(s) `upload-pack` uses to decide which refs to omit from its initial advertisement. Use more than one
diff --git a/git-am.html b/git-am.html index 2b595c8..d8b8fb0 100644 --- a/git-am.html +++ b/git-am.html
@@ -1097,6 +1097,14 @@ </div> </div> <div class="sect1"> +<h2 id="_hooks">HOOKS</h2> +<div class="sectionbody"> +<div class="paragraph"><p>This command can run <tt>applypatch-msg</tt>, <tt>pre-applypatch</tt>, +and <tt>post-applypatch</tt> hooks. See <a href="githooks.html">githooks(5)</a> for more +information.</p></div> +</div> +</div> +<div class="sect1"> <h2 id="_see_also">SEE ALSO</h2> <div class="sectionbody"> <div class="paragraph"><p><a href="git-apply.html">git-apply(1)</a>.</p></div> @@ -1112,7 +1120,7 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2014-02-27 15:06:29 PST +Last updated 2014-03-14 14:59:49 PDT </div> </div> </body>
diff --git a/git-am.txt b/git-am.txt index 17924d0..a2b9758 100644 --- a/git-am.txt +++ b/git-am.txt
@@ -193,6 +193,11 @@ commits that is more easily fixed by changing the mailbox (e.g. errors in the "From:" lines). +HOOKS +----- +This command can run `applypatch-msg`, `pre-applypatch`, +and `post-applypatch` hooks. See linkgit:githooks[5] for more +information. SEE ALSO --------
diff --git a/git-archive.html b/git-archive.html index dde6ce0..b1ebc06 100644 --- a/git-archive.html +++ b/git-archive.html
@@ -856,7 +856,10 @@ <dd> <p> Instead of making a tar archive from the local repository, - retrieve a tar archive from a remote repository. + retrieve a tar archive from a remote repository. Note that the + remote repository may place restrictions on which sha1 + expressions may be allowed in <tt><tree-ish></tt>. See + <a href="git-upload-archive.html">git-upload-archive(1)</a> for details. </p> </dd> <dt class="hdlist1"> @@ -1092,7 +1095,7 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2013-08-20 08:40:27 PDT +Last updated 2014-03-14 14:59:49 PDT </div> </div> </body>
diff --git a/git-archive.txt b/git-archive.txt index b97aaab..cfa1e4e 100644 --- a/git-archive.txt +++ b/git-archive.txt
@@ -65,7 +65,10 @@ --remote=<repo>:: Instead of making a tar archive from the local repository, - retrieve a tar archive from a remote repository. + retrieve a tar archive from a remote repository. Note that the + remote repository may place restrictions on which sha1 + expressions may be allowed in `<tree-ish>`. See + linkgit:git-upload-archive[1] for details. --exec=<git-upload-archive>:: Used with --remote to specify the path to the
diff --git a/git-config.html b/git-config.html index bd7be81..25e255c 100644 --- a/git-config.html +++ b/git-config.html
@@ -4504,6 +4504,15 @@ </p> </dd> <dt class="hdlist1"> +index.version +</dt> +<dd> +<p> + Specify the version with which new index files should be + initialized. This does not affect existing repositories. +</p> +</dd> +<dt class="hdlist1"> init.templatedir </dt> <dd> @@ -4569,7 +4578,7 @@ <a href="git-add.html">git-add(1)</a>, <a href="git-checkout.html">git-checkout(1)</a>, <a href="git-commit.html">git-commit(1)</a>, <a href="git-reset.html">git-reset(1)</a>, and <a href="git-stash.html">git-stash(1)</a>. Note that this setting is silently ignored if portable keystroke input - is not available. + is not available; requires the Perl module Term::ReadKey. </p> </dd> <dt class="hdlist1"> @@ -6026,6 +6035,18 @@ </p> </dd> <dt class="hdlist1"> +uploadarchive.allowUnreachable +</dt> +<dd> +<p> + If true, allow clients to use <tt>git archive --remote</tt> to request + any tree, whether reachable from the ref tips or not. See the + discussion in the <tt>SECURITY</tt> section of + <a href="git-upload-archive.html">git-upload-archive(1)</a> for more details. Defaults to + <tt>false</tt>. +</p> +</dd> +<dt class="hdlist1"> uploadpack.hiderefs </dt> <dd>
diff --git a/git-cvsimport.txt b/git-cvsimport.txt index 2df9953..260f39f 100644 --- a/git-cvsimport.txt +++ b/git-cvsimport.txt
@@ -21,8 +21,8 @@ *WARNING:* `git cvsimport` uses cvsps version 2, which is considered deprecated; it does not work with cvsps version 3 and later. If you are performing a one-shot import of a CVS repository consider using -link:http://cvs2svn.tigris.org/cvs2git.html[cvs2git] or -link:https://github.com/BartMassey/parsecvs[parsecvs]. +http://cvs2svn.tigris.org/cvs2git.html[cvs2git] or +https://github.com/BartMassey/parsecvs[parsecvs]. Imports a CVS repository into Git. It will either create a new repository, or incrementally import into an existing one.
diff --git a/git-filter-branch.txt b/git-filter-branch.txt index 2eba627..09535f2 100644 --- a/git-filter-branch.txt +++ b/git-filter-branch.txt
@@ -436,7 +436,7 @@ of your Git history, but you probably don't need this flexibility if you're simply _removing unwanted data_ like large files or passwords. For those operations you may want to consider -link:http://rtyley.github.io/bfg-repo-cleaner/[The BFG Repo-Cleaner], +http://rtyley.github.io/bfg-repo-cleaner/[The BFG Repo-Cleaner], a JVM-based alternative to git-filter-branch, typically at least 10-50x faster for those use-cases, and with quite different characteristics: @@ -455,7 +455,7 @@ _is_ possible to write filters that include their own parallellism, in the scripts executed against each commit. -* The link:http://rtyley.github.io/bfg-repo-cleaner/#examples[command options] +* The http://rtyley.github.io/bfg-repo-cleaner/#examples[command options] are much more restrictive than git-filter branch, and dedicated just to the tasks of removing unwanted data- e.g: `--strip-blobs-bigger-than 1M`.
diff --git a/git-stash.html b/git-stash.html index 89821b7..74dc202 100644 --- a/git-stash.html +++ b/git-stash.html
@@ -790,7 +790,7 @@ <div class="sectionbody"> <div class="dlist"><dl> <dt class="hdlist1"> -save [-p|--patch] [--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>] +save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>] </dt> <dd> <p> @@ -1083,7 +1083,7 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2013-08-20 08:40:27 PDT +Last updated 2014-03-14 14:59:49 PDT </div> </div> </body>
diff --git a/git-stash.txt b/git-stash.txt index db7e803..375213f 100644 --- a/git-stash.txt +++ b/git-stash.txt
@@ -44,7 +44,7 @@ OPTIONS ------- -save [-p|--patch] [--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]:: +save [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]:: Save your local modifications to a new 'stash', and run `git reset --hard` to revert them. The <message> part is optional and gives
diff --git a/git-submodule.html b/git-submodule.html index fadee5d..e67670c 100644 --- a/git-submodule.html +++ b/git-submodule.html
@@ -756,7 +756,7 @@ <em>git submodule</em> [--quiet] init [--] [<path>…] <em>git submodule</em> [--quiet] deinit [-f|--force] [--] <path>… <em>git submodule</em> [--quiet] update [--init] [--remote] [-N|--no-fetch] - [-f|--force] [--rebase|--merge|--checkout] [--reference <repository>] + [-f|--force] [--checkout|--rebase|--merge] [--reference <repository>] [--depth <depth>] [--recursive] [--] [<path>…] <em>git submodule</em> [--quiet] summary [--cached|--files] [(-n|--summary-limit) <n>] [commit] [--] [<path>…] @@ -1136,6 +1136,20 @@ </p> </dd> <dt class="hdlist1"> +--checkout +</dt> +<dd> +<p> + This option is only valid for the update command. + Checkout the commit recorded in the superproject on a detached HEAD + in the submodule. This is the default behavior, the main use of + this option is to override <tt>submodule.$name.update</tt> when set to + <tt>merge</tt>, <tt>rebase</tt> or <tt>none</tt>. + If the key <tt>submodule.$name.update</tt> is either not explicitly set or + set to <tt>checkout</tt>, this option is implicit. +</p> +</dd> +<dt class="hdlist1"> --merge </dt> <dd> @@ -1250,7 +1264,7 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2014-02-27 15:06:29 PST +Last updated 2014-03-14 14:59:49 PDT </div> </div> </body>
diff --git a/git-submodule.txt b/git-submodule.txt index 21cb59a..46c1eeb 100644 --- a/git-submodule.txt +++ b/git-submodule.txt
@@ -15,7 +15,7 @@ 'git submodule' [--quiet] init [--] [<path>...] 'git submodule' [--quiet] deinit [-f|--force] [--] <path>... 'git submodule' [--quiet] update [--init] [--remote] [-N|--no-fetch] - [-f|--force] [--rebase|--merge|--checkout] [--reference <repository>] + [-f|--force] [--checkout|--rebase|--merge] [--reference <repository>] [--depth <depth>] [--recursive] [--] [<path>...] 'git submodule' [--quiet] summary [--cached|--files] [(-n|--summary-limit) <n>] [commit] [--] [<path>...] @@ -315,6 +315,15 @@ This option is only valid for the update command. Don't fetch new objects from the remote site. +--checkout:: + This option is only valid for the update command. + Checkout the commit recorded in the superproject on a detached HEAD + in the submodule. This is the default behavior, the main use of + this option is to override `submodule.$name.update` when set to + `merge`, `rebase` or `none`. + If the key `submodule.$name.update` is either not explicitly set or + set to `checkout`, this option is implicit. + --merge:: This option is only valid for the update command. Merge the commit recorded in the superproject into the current branch
diff --git a/git-upload-archive.html b/git-upload-archive.html index b50e391..8ff295b 100644 --- a/git-upload-archive.html +++ b/git-upload-archive.html
@@ -766,6 +766,48 @@ </div> </div> <div class="sect1"> +<h2 id="_security">SECURITY</h2> +<div class="sectionbody"> +<div class="paragraph"><p>In order to protect the privacy of objects that have been removed from +history but may not yet have been pruned, <tt>git-upload-archive</tt> avoids +serving archives for commits and trees that are not reachable from the +repository’s refs. However, because calculating object reachability is +computationally expensive, <tt>git-upload-archive</tt> implements a stricter +but easier-to-check set of rules:</p></div> +<div class="olist arabic"><ol class="arabic"> +<li> +<p> +Clients may request a commit or tree that is pointed to directly by + a ref. E.g., <tt>git archive --remote=origin v1.0</tt>. +</p> +</li> +<li> +<p> +Clients may request a sub-tree within a commit or tree using the + <tt>ref:path</tt> syntax. E.g., <tt>git archive --remote=origin v1.0:Documentation</tt>. +</p> +</li> +<li> +<p> +Clients may <em>not</em> use other sha1 expressions, even if the end + result is reachable. E.g., neither a relative commit like <tt>master^</tt> + nor a literal sha1 like <tt>abcd1234</tt> is allowed, even if the result + is reachable from the refs. +</p> +</li> +</ol></div> +<div class="paragraph"><p>Note that rule 3 disallows many cases that do not have any privacy +implications. These rules are subject to change in future versions of +git, and the server accessed by <tt>git archive --remote</tt> may or may not +follow these exact rules.</p></div> +<div class="paragraph"><p>If the config option <tt>uploadArchive.allowUnreachable</tt> is true, these +rules are ignored, and clients may use arbitrary sha1 expressions. +This is useful if you do not care about the privacy of unreachable +objects, or if your object database is already publicly available for +access via non-smart-http.</p></div> +</div> +</div> +<div class="sect1"> <h2 id="_options">OPTIONS</h2> <div class="sectionbody"> <div class="dlist"><dl> @@ -790,7 +832,7 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2013-08-20 08:40:27 PDT +Last updated 2014-03-14 14:59:49 PDT </div> </div> </body>
diff --git a/git-upload-archive.txt b/git-upload-archive.txt index d09bbb5..cbef61b 100644 --- a/git-upload-archive.txt +++ b/git-upload-archive.txt
@@ -20,6 +20,38 @@ for the protocol is on the 'git archive' side, and the program pair is meant to be used to get an archive from a remote repository. +SECURITY +-------- + +In order to protect the privacy of objects that have been removed from +history but may not yet have been pruned, `git-upload-archive` avoids +serving archives for commits and trees that are not reachable from the +repository's refs. However, because calculating object reachability is +computationally expensive, `git-upload-archive` implements a stricter +but easier-to-check set of rules: + + 1. Clients may request a commit or tree that is pointed to directly by + a ref. E.g., `git archive --remote=origin v1.0`. + + 2. Clients may request a sub-tree within a commit or tree using the + `ref:path` syntax. E.g., `git archive --remote=origin v1.0:Documentation`. + + 3. Clients may _not_ use other sha1 expressions, even if the end + result is reachable. E.g., neither a relative commit like `master^` + nor a literal sha1 like `abcd1234` is allowed, even if the result + is reachable from the refs. + +Note that rule 3 disallows many cases that do not have any privacy +implications. These rules are subject to change in future versions of +git, and the server accessed by `git archive --remote` may or may not +follow these exact rules. + +If the config option `uploadArchive.allowUnreachable` is true, these +rules are ignored, and clients may use arbitrary sha1 expressions. +This is useful if you do not care about the privacy of unreachable +objects, or if your object database is already publicly available for +access via non-smart-http. + OPTIONS ------- <directory>::
diff --git a/git.html b/git.html index ac39e7d..5095d50 100644 --- a/git.html +++ b/git.html
@@ -2350,6 +2350,16 @@ </p> </dd> <dt class="hdlist1"> +<em>GIT_INDEX_VERSION</em> +</dt> +<dd> +<p> + This environment variable allows the specification of an index + version for new repositories. It won’t affect existing index + files. By default index file version [23] is used. +</p> +</dd> +<dt class="hdlist1"> <em>GIT_OBJECT_DIRECTORY</em> </dt> <dd> @@ -2856,7 +2866,7 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2014-02-14 13:59:55 PST +Last updated 2014-03-14 14:59:49 PDT </div> </div> </body>
diff --git a/git.txt b/git.txt index 02bbc08..27a199c 100644 --- a/git.txt +++ b/git.txt
@@ -720,6 +720,11 @@ index file. If not specified, the default of `$GIT_DIR/index` is used. +'GIT_INDEX_VERSION':: + This environment variable allows the specification of an index + version for new repositories. It won't affect existing index + files. By default index file version [23] is used. + 'GIT_OBJECT_DIRECTORY':: If the object storage directory is specified via this environment variable then the sha1 directories are created
diff --git a/gitcore-tutorial.txt b/gitcore-tutorial.txt index 058a352..d2d7c21 100644 --- a/gitcore-tutorial.txt +++ b/gitcore-tutorial.txt
@@ -1443,7 +1443,7 @@ convenient to organize your project with an informal hierarchy of developers. Linux kernel development is run this way. There is a nice illustration (page 17, "Merges to Mainline") in -link:http://www.xenotime.net/linux/mentor/linux-mentoring-2006.pdf[Randy Dunlap's presentation]. +http://www.xenotime.net/linux/mentor/linux-mentoring-2006.pdf[Randy Dunlap's presentation]. It should be stressed that this hierarchy is purely *informal*. There is nothing fundamental in Git that enforces the "chain of
diff --git a/gitcvs-migration.txt b/gitcvs-migration.txt index 5ea94cb..5f4e890 100644 --- a/gitcvs-migration.txt +++ b/gitcvs-migration.txt
@@ -117,7 +117,7 @@ ----------------------- First, install version 2.1 or higher of cvsps from -link:http://www.cobite.com/cvsps/[http://www.cobite.com/cvsps/] and make +http://www.cobite.com/cvsps/[http://www.cobite.com/cvsps/] and make sure it is in your path. Then cd to a checked out CVS working directory of the project you are interested in and run linkgit:git-cvsimport[1]:
diff --git a/gitignore.html b/gitignore.html index 17a1a2a..7d00efe 100644 --- a/gitignore.html +++ b/gitignore.html
@@ -852,6 +852,12 @@ </li> <li> <p> +Trailing spaces are ignored unless they are quoted with backlash + ("<tt>\</tt>"). +</p> +</li> +<li> +<p> An optional prefix "<tt>!</tt>" which negates the pattern; any matching file excluded by a previous pattern will become included again. It is not possible to re-include a file if a parent @@ -1018,7 +1024,7 @@ <div id="footnotes"><hr /></div> <div id="footer"> <div id="footer-text"> -Last updated 2014-01-27 13:30:07 PST +Last updated 2014-03-14 14:59:49 PDT </div> </div> </body>
diff --git a/gitignore.txt b/gitignore.txt index b08d34d..8734c15 100644 --- a/gitignore.txt +++ b/gitignore.txt
@@ -77,6 +77,9 @@ Put a backslash ("`\`") in front of the first hash for patterns that begin with a hash. + - Trailing spaces are ignored unless they are quoted with backlash + ("`\`"). + - An optional prefix "`!`" which negates the pattern; any matching file excluded by a previous pattern will become included again. It is not possible to re-include a file if a parent
diff --git a/gitweb.txt b/gitweb.txt index cca14b8..cd9c895 100644 --- a/gitweb.txt +++ b/gitweb.txt
@@ -84,7 +84,7 @@ * Fields use modified URI encoding, defined in RFC 3986, section 2.1 (Percent-Encoding), or rather "Query string encoding" (see -link:http://en.wikipedia.org/wiki/Query_string#URL_encoding[]), the difference +http://en.wikipedia.org/wiki/Query_string#URL_encoding[]), the difference being that SP (" ") can be encoded as "{plus}" (and therefore "{plus}" has to be also percent-encoded). +
diff --git a/technical/http-protocol.txt b/technical/http-protocol.txt index 544373b..20525d9 100644 --- a/technical/http-protocol.txt +++ b/technical/http-protocol.txt
@@ -500,7 +500,7 @@ References ---------- -link:http://www.ietf.org/rfc/rfc1738.txt[RFC 1738: Uniform Resource Locators (URL)] -link:http://www.ietf.org/rfc/rfc2616.txt[RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1] +http://www.ietf.org/rfc/rfc1738.txt[RFC 1738: Uniform Resource Locators (URL)] +http://www.ietf.org/rfc/rfc2616.txt[RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1] link:technical/pack-protocol.html link:technical/protocol-capabilities.html